//
//  BKXEmotionTools.swift
//  微博
//
//  Created by 田凯 on 16/4/26.
//  Copyright © 2016年 田凯. All rights reserved.
//

import UIKit

// 最多显示的列数
let BKXEmotionMaxCol = 7
// 最多显示的行数
let BKXEmotionMaxRow = 3

// 最多显示的cell数
let BKXEmotionMaxCount = BKXEmotionMaxCol * BKXEmotionMaxRow - 1


class BKXEmotionTools: NSObject {

    //设置全局访问点
    static let sharedTools: BKXEmotionTools = BKXEmotionTools()
    
    //懒加载 bundle文件
     lazy var emotionBundle: NSBundle = {
        //获取 bundle路径
        let path = NSBundle.mainBundle().pathForResource("Emoticons.bundle", ofType: nil)
        let bundle = NSBundle(path: path!)
        return bundle!
        }()
    
    // MARK: - 懒加载 默认表情
     lazy var defaultEmotions:[BKXEmotion] = {
        return self.getEmotions("default/")

        }()
    
    // MARK: - 懒加载 enoji表情
    lazy var emojiEmotions: [BKXEmotion] = {
        return self.getEmotions("emoji/")

    
    }()
    // MARK: - 懒加载 浪小花表情
    lazy var lxhEmotions: [BKXEmotion] = {
        return self.getEmotions("lxh/")
        
        
        }()
    

//    func demo(){
////     getEmotionsGroup(<#T##emotions: [BKXEmotion]##[BKXEmotion]#>)
//        
//    
//    }
    // MARK: -  懒加载 三位数组
    lazy var allEmotions: [[[BKXEmotion]]] = {
        return [
            self.getEmotionsGroup(self.defaultEmotions),
            self.getEmotionsGroup(self.emojiEmotions),
            self.getEmotionsGroup(self.lxhEmotions)]
        
        }()
    // MARK: - 把一维数组 截取为二维数组
    func getEmotionsGroup(emotions: [BKXEmotion])->[[BKXEmotion]]{
    
    // 获取每个表情块 一共有多少页
        let pageCount = (emotions.count + BKXEmotionMaxCount - 1) / BKXEmotionMaxCount
        // 定义一个 可变的临时数组 保存 一维数组
        var tempArray: [[BKXEmotion]] = [[BKXEmotion]]()
        
        // 遍历一维数组
        for index in 0..<pageCount{
        let loc = index * BKXEmotionMaxCount
        
        var length = BKXEmotionMaxCount
            if loc + length > emotions.count{
            length = emotions.count - loc
            
            }
            
            //获取 range 
             let range = NSMakeRange(loc, length)
            //截取数组
            let arr = (emotions as NSArray).subarrayWithRange(range) as! [BKXEmotion]
            // 添加到 临时数组中
            tempArray.append(arr)
            
        }
        
        
    return tempArray
    }
    
    
    
    // MARK: - 获取一维数组 数据的方法
    func getEmotions(path: String)->[BKXEmotion]{
        
        //获取bundle文件下的 plist文件的路径
        let  filePath = emotionBundle.pathForResource("\(path)info.plist", ofType: nil)
        // 通过路径 转成数组
        let array = NSArray(contentsOfFile: filePath!)
        
        // 定义 一个 可变的临时数组
        var tempArray: [BKXEmotion] = [BKXEmotion]()
        // 遍历数组
        for dict in array!{
        //字典转模型
            let  emotion = BKXEmotion.init(dict: dict as! [String : AnyObject])
            
            //添加都可变数组中
            tempArray.append(emotion)
        
        }
        return tempArray    
    }
    
    
}
